package sudroid.android.graphics.gif;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import sudroid.LogUtils;

public class Decoder extends Thread
{
  private static final Bitmap.Config GLOBLE_CONFIG = Bitmap.Config.ARGB_4444;
  private static final int MaxStackSize = 4096;
  public static final int STATUS_FINISH = 255;
  public static final int STATUS_FORMAT_ERROR = 1;
  public static final int STATUS_OPEN_ERROR = 2;
  public static final int STATUS_PARSING;
  private int[] act;
  private Action action;
  private int bgColor;
  private int bgIndex;
  private byte[] block;
  private int blockSize;
  private Frame currentFrame = null;
  private int delay;
  private int dispose;
  private int frameCount;
  private int[] gct;
  private boolean gctFlag;
  private int gctSize;
  private byte[] gifData;
  private Frame gifFrame;
  int height;
  private int ih;
  private Bitmap image;
  private InputStream in;
  private boolean interlace;
  private boolean isShow = 0;
  private int iw;
  private int ix;
  private int iy;
  private boolean justDecodeBounds;
  private int lastBgColor;
  private int lastDispose;
  private Bitmap lastImage;
  private int[] lct;
  private boolean lctFlag;
  private int lctSize;
  private int loopCount = 1;
  private int lrh;
  private int lrw;
  private int lrx;
  private int lry;
  private byte[] pixelStack;
  private byte[] pixels;
  private short[] prefix;
  private int status;
  private byte[] suffix;
  private int transIndex;
  boolean transparency;
  int width;

  private Decoder()
  {
    byte[] arrayOfByte = new byte[256];
    this.block = arrayOfByte;
    this.blockSize = 0;
    this.dispose = 0;
    this.lastDispose = 0;
    this.transparency = 0;
    this.delay = 0;
    this.action = null;
    this.gifData = null;
  }

  protected Decoder(InputStream paramInputStream, Action paramAction, boolean paramBoolean)
  {
    byte[] arrayOfByte = new byte[256];
    this.block = arrayOfByte;
    this.blockSize = 0;
    this.dispose = 0;
    this.lastDispose = 0;
    this.transparency = 0;
    this.delay = 0;
    this.action = null;
    this.gifData = null;
    this.in = paramInputStream;
    this.action = paramAction;
    this.justDecodeBounds = paramBoolean;
  }

  protected Decoder(byte[] paramArrayOfByte, Action paramAction, boolean paramBoolean)
  {
    byte[] arrayOfByte = new byte[256];
    this.block = arrayOfByte;
    this.blockSize = 0;
    this.dispose = 0;
    this.lastDispose = 0;
    this.transparency = 0;
    this.delay = 0;
    this.action = null;
    this.gifData = null;
    this.gifData = paramArrayOfByte;
    this.action = paramAction;
    this.justDecodeBounds = paramBoolean;
  }

  private void decodeImageData()
  {
    int i = this.iw;
    int j = this.ih;
    int k = i * j;
    if (this.pixels != null)
    {
      int m = this.pixels.length;
      int n = k;
      if (m >= n);
    }
    else
    {
      byte[] arrayOfByte1 = new byte[k];
      this.pixels = arrayOfByte1;
    }
    if (this.prefix == null)
    {
      Object localObject = null;
      this.prefix = localObject;
    }
    if (this.suffix == null)
    {
      byte[] arrayOfByte2 = new byte[4096];
      this.suffix = arrayOfByte2;
    }
    if (this.pixelStack == null)
    {
      byte[] arrayOfByte3 = new byte[4097];
      this.pixelStack = arrayOfByte3;
    }
    int i1 = read();
    int i2 = 1 << i1;
    int i3 = i2 + 1;
    int i4 = i2 + 2;
    int i5 = -1;
    int i6 = i1 + 1;
    int i7 = (1 << i6) - 1;
    int i8 = 0;
    int i9;
    int i12;
    int i13;
    int i14;
    int i15;
    int i16;
    int i17;
    if (i8 >= i2)
    {
      i9 = 0;
      int i10 = i9;
      int i11 = i9;
      i12 = i9;
      i13 = i9;
      i14 = i9;
      i15 = i9;
      i16 = 0;
      i17 = i10;
      i18 = i11;
    }
    while (true)
    {
      label195: int i19 = i16;
      int i20 = k;
      if (i19 >= i20)
        label209: int i21 = i18;
      while (true)
      {
        i16 = i17;
        label217: int i22 = i16;
        int i23 = k;
        if (i22 < i23)
          break label774;
        return;
        this.prefix[i8] = 0;
        byte[] arrayOfByte4 = this.suffix;
        int i24 = (byte)i8;
        arrayOfByte4[i8] = i24;
        i8 += 1;
        break;
        if (i18 != 0)
          break label791;
        if (i14 < i6)
        {
          if (i13 == 0)
          {
            i13 = readBlock();
            if (i13 <= 0)
            {
              int i25 = i18;
              continue;
            }
            i9 = 0;
          }
          int i26 = (this.block[i9] & 0xFF) << i14;
          i15 += i26;
          i14 += 8;
          i9 += 1;
          i13 += -1;
          break label195;
        }
        i8 = i15 & i7;
        i15 >>= i6;
        i14 -= i6;
        if (i8 > i4)
          break label209;
        if (i8 != i3)
          break label393;
        int i27 = i18;
      }
      label393: if (i8 == i2)
      {
        i6 = i1 + 1;
        i7 = (1 << i6) - 1;
        i4 = i2 + 2;
        i5 = -1;
        continue;
      }
      int i28 = i5;
      int i29 = -1;
      if (i28 != i29)
        break label485;
      byte[] arrayOfByte5 = this.pixelStack;
      int i30 = i18 + 1;
      int i31 = this.suffix[i8];
      arrayOfByte5[i18] = i31;
      i5 = i8;
      i12 = i8;
      i18 = i30;
    }
    label485: int i32 = i8;
    int i33;
    if (i8 == i4)
    {
      byte[] arrayOfByte6 = this.pixelStack;
      i33 = i18 + 1;
      int i34 = (byte)i12;
      arrayOfByte6[i18] = i34;
      i8 = i5;
    }
    int i38;
    for (int i18 = i33; ; i18 = i38)
    {
      if (i8 <= i2)
      {
        i12 = this.suffix[i8] & 0xFF;
        int i35 = i4;
        int i36 = 4096;
        if (i35 < i36)
          break label615;
        int i37 = i18;
        break;
      }
      byte[] arrayOfByte7 = this.pixelStack;
      i38 = i18 + 1;
      int i39 = this.suffix[i8];
      arrayOfByte7[i18] = i39;
      i8 = this.prefix[i8];
    }
    label615: byte[] arrayOfByte8 = this.pixelStack;
    int i40 = i18 + 1;
    int i41 = (byte)i12;
    arrayOfByte8[i18] = i41;
    short[] arrayOfShort = this.prefix;
    int i42 = (short)i5;
    arrayOfShort[i4] = i42;
    byte[] arrayOfByte9 = this.suffix;
    int i43 = (byte)i12;
    arrayOfByte9[i4] = i43;
    i4 += 1;
    if ((i4 & i7) == 0)
    {
      int i44 = i4;
      int i45 = 4096;
      if (i44 < i45)
      {
        int i46 = i6 + 1;
        int i47 = i7 + i4;
      }
    }
    int i48 = i32;
    while (true)
    {
      int i49 = i40 + -1;
      byte[] arrayOfByte10 = this.pixels;
      int i50 = i17 + 1;
      int i51 = this.pixelStack[i49];
      arrayOfByte10[i17] = i51;
      i16 += 1;
      i17 = i50;
      i18 = i49;
      break;
      label774: this.pixels[i16] = 0;
      i16 += 1;
      break label217;
      label791: i40 = i18;
    }
  }

  private boolean err()
  {
    if (this.status != 0);
    for (int i = 1; ; i = 0)
      return i;
  }

  private void init()
  {
    this.status = 0;
    this.frameCount = 0;
    this.gifFrame = null;
    this.gct = null;
    this.lct = null;
  }

  private int read()
  {
    int i = 0;
    try
    {
      int j = this.in.read();
      i = j;
      return i;
    }
    catch (Exception localException)
    {
      while (true)
        this.status = 1;
    }
  }

  private int readBlock()
  {
    int i = read();
    this.blockSize = i;
    int j = 0;
    if (this.blockSize > 0);
    try
    {
      while (true)
      {
        int k = this.blockSize;
        if (j >= k);
        int i2;
        do
        {
          int m = this.blockSize;
          if (j < m)
            this.status = 1;
          return j;
          InputStream localInputStream = this.in;
          byte[] arrayOfByte = this.block;
          int n = this.blockSize - j;
          int i1 = localInputStream.read(arrayOfByte, j, n);
          i2 = i1;
        }
        while (i2 == -1);
        j += i2;
      }
    }
    catch (Exception localException)
    {
      while (true)
        localException.printStackTrace();
    }
  }

  private int readByte()
  {
    byte[] arrayOfByte = this.gifData;
    ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(arrayOfByte);
    this.in = localByteArrayInputStream;
    this.gifData = null;
    return readStream();
  }

  private int readByteJustDecodeBounds()
  {
    byte[] arrayOfByte = this.gifData;
    ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(arrayOfByte);
    this.in = localByteArrayInputStream;
    this.gifData = null;
    return readStreamJustDecodeBounds();
  }

  private int[] readColorTable(int paramInt)
  {
    int i = paramInt * 3;
    int[] arrayOfInt = (int[])0;
    byte[] arrayOfByte = new byte[i];
    int j = 0;
    while (true)
    {
      int m;
      int n;
      try
      {
        int k = this.in.read(arrayOfByte);
        j = k;
        if (j >= i)
          continue;
        this.status = 1;
        return arrayOfInt;
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        continue;
        arrayOfInt = new int[256];
        m = 0;
        n = 0;
      }
      while (n < paramInt)
      {
        int i1 = m + 1;
        int i2 = arrayOfByte[m] & 0xFF;
        int i3 = i1 + 1;
        int i4 = arrayOfByte[i1] & 0xFF;
        int i5 = i3 + 1;
        int i6 = arrayOfByte[i3] & 0xFF;
        int i7 = n + 1;
        int i8 = i2 << 16;
        int i9 = 0xFF000000 | i8;
        int i10 = i4 << 8;
        int i11 = i9 | i10 | i6;
        arrayOfInt[n] = i11;
        m = i5;
        n = i7;
      }
    }
  }

  private void readContents()
  {
    int i = 0;
    while (true)
    {
      if ((i != 0) || (err()))
        return;
      switch (read())
      {
      case 0:
      default:
        this.status = 1;
        break;
      case 44:
        readImage();
        break;
      case 33:
        switch (read())
        {
        default:
          skip();
          break;
        case 249:
          readGraphicControlExt();
          break;
        case 255:
          int j = readBlock();
          StringBuilder localStringBuilder1 = new StringBuilder();
          int k = 0;
          while (true)
          {
            if (k >= 11)
            {
              if (!localStringBuilder1.toString().equals("NETSCAPE2.0"))
                break label187;
              readNetscapeExt();
              break;
            }
            char c = (char)this.block[k];
            StringBuilder localStringBuilder2 = localStringBuilder1.append(c);
            k += 1;
          }
          skip();
        }
        break;
      case 59:
        label187: i = 1;
      }
    }
  }

  private void readGraphicControlExt()
  {
    int i = read();
    int j = read();
    int k = (j & 0x1C) >> 2;
    this.dispose = k;
    if (this.dispose == 0)
      this.dispose = 1;
    if ((j & 0x1) != 0);
    for (int m = 1; ; m = 0)
    {
      this.transparency = m;
      int n = readShort() * 10;
      this.delay = n;
      int i1 = read();
      this.transIndex = i1;
      int i2 = read();
      return;
    }
  }

  private void readHeader()
  {
    StringBuilder localStringBuilder1 = new StringBuilder();
    int i = 0;
    if (i >= 6)
    {
      if (localStringBuilder1.toString().startsWith("GIF"))
        break label54;
      this.status = 1;
    }
    while (true)
    {
      return;
      char c = (char)read();
      StringBuilder localStringBuilder2 = localStringBuilder1.append(c);
      i += 1;
      break;
      label54: readLSD();
      if ((!this.gctFlag) || (err()))
        continue;
      int j = this.gctSize;
      int[] arrayOfInt1 = readColorTable(j);
      this.gct = arrayOfInt1;
      int[] arrayOfInt2 = this.gct;
      int k = this.bgIndex;
      int m = arrayOfInt2[k];
      this.bgColor = m;
    }
  }

  private void readImage()
  {
    int i = readShort();
    this.ix = i;
    int j = readShort();
    this.iy = j;
    int k = readShort();
    this.iw = k;
    int m = readShort();
    this.ih = m;
    int n = read();
    int i1;
    label79: int i5;
    if ((n & 0x80) != 0)
    {
      i1 = 1;
      this.lctFlag = i1;
      if ((n & 0x40) == 0)
        break label217;
      i1 = 1;
      this.interlace = i1;
      int i2 = n & 0x7;
      int i3 = 2 << i2;
      this.lctSize = i3;
      if (!this.lctFlag)
        break label224;
      int i4 = this.lctSize;
      int[] arrayOfInt1 = readColorTable(i4);
      this.lct = arrayOfInt1;
      int[] arrayOfInt2 = this.lct;
      this.act = arrayOfInt2;
      label143: i5 = 0;
      if (this.transparency)
      {
        int[] arrayOfInt3 = this.act;
        int i6 = this.transIndex;
        i5 = arrayOfInt3[i6];
        int[] arrayOfInt4 = this.act;
        int i7 = this.transIndex;
        arrayOfInt4[i7] = 0;
      }
      if (this.act == null)
        this.status = 1;
      if (!err())
        break label263;
    }
    while (true)
    {
      return;
      i1 = 0;
      break;
      label217: i1 = 0;
      break label79;
      label224: int[] arrayOfInt5 = this.gct;
      this.act = arrayOfInt5;
      int i8 = this.bgIndex;
      int i9 = this.transIndex;
      if (i8 != i9)
        break label143;
      this.bgColor = 0;
      break label143;
      label263: decodeImageData();
      skip();
      if (err())
        continue;
      int i10 = this.frameCount + 1;
      this.frameCount = i10;
      int i11 = this.width;
      int i12 = this.height;
      Bitmap.Config localConfig = GLOBLE_CONFIG;
      Bitmap localBitmap1 = Bitmap.createBitmap(i11, i12, localConfig);
      this.image = localBitmap1;
      setPixels();
      if (this.gifFrame != null)
        break label436;
      Bitmap localBitmap2 = this.image;
      int i13 = this.delay;
      Frame localFrame1 = new Frame(localBitmap2, i13);
      this.gifFrame = localFrame1;
      Frame localFrame2 = this.gifFrame;
      this.currentFrame = localFrame2;
      if (this.transparency)
      {
        int[] arrayOfInt6 = this.act;
        int i14 = this.transIndex;
        arrayOfInt6[i14] = i5;
      }
      resetFrame();
      Action localAction = this.action;
      int i15 = this.frameCount;
      localAction.parseOk(1, i15);
    }
    label436: for (Frame localFrame3 = this.gifFrame; ; localFrame3 = localFrame3.nextFrame)
    {
      if (localFrame3.nextFrame != null)
        continue;
      Bitmap localBitmap3 = this.image;
      int i16 = this.delay;
      Frame localFrame4 = new Frame(localBitmap3, i16);
      localFrame3.nextFrame = localFrame4;
      break;
    }
  }

  private void readLSD()
  {
    int i = readShort();
    this.width = i;
    int j = readShort();
    this.height = j;
    int k = read();
    if ((k & 0x80) != 0);
    for (int m = 1; ; m = 0)
    {
      this.gctFlag = m;
      int n = k & 0x7;
      int i1 = 2 << n;
      this.gctSize = i1;
      int i2 = read();
      this.bgIndex = i2;
      return;
    }
  }

  private void readNetscapeExt()
  {
    do
    {
      int i = readBlock();
      if (this.block[0] != 1)
        continue;
      int j = this.block[1] & 0xFF;
      int k = (this.block[2] & 0xFF) << 8 | j;
      this.loopCount = k;
    }
    while ((this.blockSize > 0) && (!err()));
  }

  private int readShort()
  {
    int i = read();
    int j = read() << 8;
    return i | j;
  }

  private int readStream()
  {
    init();
    if (this.in != null)
    {
      readHeader();
      if (!err())
      {
        readContents();
        if (this.frameCount >= 0)
          break label63;
        this.status = 1;
        this.action.parseOk(0, -1);
      }
    }
    while (true)
    {
      try
      {
        this.in.close();
        return this.status;
        label63: this.status = -1;
        this.action.parseOk(1, -1);
        continue;
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        continue;
      }
      this.status = 2;
      this.action.parseOk(0, -1);
    }
  }

  private int readStreamJustDecodeBounds()
  {
    init();
    if (this.in != null)
    {
      readHeader();
      boolean bool = err();
    }
    while (true)
    {
      try
      {
        this.in.close();
        return this.status;
      }
      catch (Exception localException)
      {
        LogUtils.e(localException);
        continue;
      }
      this.status = 2;
      this.action.parseOk(0, -1);
    }
  }

  private void resetFrame()
  {
    int i = this.dispose;
    this.lastDispose = i;
    int j = this.ix;
    this.lrx = j;
    int k = this.iy;
    this.lry = k;
    int m = this.iw;
    this.lrw = m;
    int n = this.ih;
    this.lrh = n;
    Bitmap localBitmap = this.image;
    this.lastImage = localBitmap;
    int i1 = this.bgColor;
    this.lastBgColor = i1;
    this.dispose = 0;
    this.transparency = 0;
    this.delay = 0;
    this.lct = null;
  }

  private void setPixels()
  {
    int i = this.width;
    int j = this.height;
    int[] arrayOfInt = new int[i * j];
    if (this.lastDispose > 0)
      if (this.lastDispose == 3)
      {
        int k = this.frameCount - 2;
        if (k <= 0)
          break label220;
        int m = k - 1;
        Decoder localDecoder = this;
        int n = m;
        Bitmap localBitmap1 = localDecoder.getFrameImage(n);
        this.lastImage = localBitmap1;
      }
    int i4;
    int i5;
    int i7;
    int i8;
    int i9;
    label220: label232: int i20;
    while (true)
    {
      if (this.lastImage != null)
      {
        Bitmap localBitmap2 = this.lastImage;
        int i1 = this.width;
        int i2 = this.width;
        int i3 = this.height;
        localBitmap2.getPixels(arrayOfInt, 0, i1, 0, 0, i2, i3);
        if (this.lastDispose == 2)
        {
          i4 = 0;
          if (!this.transparency)
            i4 = this.lastBgColor;
          i5 = 0;
          int i6 = this.lrh;
          if (i5 < i6)
            break label232;
        }
      }
      i7 = 1;
      i8 = 8;
      i9 = 0;
      i5 = 0;
      int i10 = this.ih;
      if (i5 < i10)
        break;
      int i11 = this.width;
      int i12 = this.height;
      Bitmap.Config localConfig = GLOBLE_CONFIG;
      Bitmap localBitmap3 = Bitmap.createBitmap(arrayOfInt, i11, i12, localConfig);
      this.image = localBitmap3;
      return;
      Object localObject = null;
      this.lastImage = localObject;
      continue;
      int i13 = this.lry + i5;
      int i14 = this.width;
      int i15 = i13 * i14;
      int i16 = this.lrx;
      int i17 = i15 + i16;
      int i18 = this.lrw;
      int i19 = i17 + i18;
      i20 = i17;
      while (true)
      {
        int i21 = i20;
        int i22 = i19;
        if (i21 >= i22)
        {
          i5 += 1;
          break;
        }
        arrayOfInt[i20] = i4;
        i20 += 1;
      }
    }
    int i23 = i5;
    if (this.interlace)
    {
      int i24 = this.ih;
      if (i9 < i24);
    }
    label376: int i32;
    int i34;
    int i36;
    switch (i7 + 1)
    {
    default:
      i23 = i9;
      int i25 = i9 + i8;
      int i26 = this.iy;
      i23 += i26;
      int i27 = this.height;
      int i28 = i23;
      int i29 = i27;
      if (i28 >= i29)
        break;
      int i30 = this.width;
      i20 = i23 * i30;
      int i31 = this.ix;
      i32 = i20 + i31;
      int i33 = this.iw;
      i34 = i32 + i33;
      if (this.width + i20 < i34)
      {
        int i35 = this.width;
        i34 = i20 + i35;
      }
      i36 = this.iw;
    case 2:
    case 3:
    case 4:
    }
    int i38;
    for (int i37 = i5 * i36; ; i37 = i38)
    {
      if (i32 >= i34)
      {
        i5 += 1;
        break;
        i9 = 4;
        break label376;
        i9 = 2;
        i8 = 4;
        break label376;
        i9 = 1;
        i8 = 2;
        break label376;
      }
      byte[] arrayOfByte = this.pixels;
      i38 = i37 + 1;
      int i39 = arrayOfByte[i37] & 0xFF;
      i4 = this.act[i39];
      if (i4 != 0)
        arrayOfInt[i32] = i4;
      i32 += 1;
    }
  }

  private void skip()
  {
    do
      int i = readBlock();
    while ((this.blockSize > 0) && (!err()));
  }

  public void free()
  {
    Frame localFrame1 = this.gifFrame;
    while (true)
    {
      if ((localFrame1 != null) || (this.in != null));
      try
      {
        this.in.close();
        label23: this.in = null;
        this.gifData = null;
        return;
        localFrame1.image = null;
        Frame localFrame2 = this.gifFrame.nextFrame;
        this.gifFrame = localFrame2;
        localFrame1 = this.gifFrame;
      }
      catch (IOException localIOException)
      {
        break label23;
      }
    }
  }

  public Frame getCurrentFrame()
  {
    return this.currentFrame;
  }

  public int getDelay(int paramInt)
  {
    this.delay = -1;
    if (paramInt >= 0)
    {
      int i = this.frameCount;
      if (paramInt < i)
      {
        Frame localFrame = getFrame(paramInt);
        if (localFrame != null)
        {
          int j = localFrame.delay;
          this.delay = j;
        }
      }
    }
    return this.delay;
  }

  public int[] getDelays()
  {
    Frame localFrame = this.gifFrame;
    int[] arrayOfInt = new int[this.frameCount];
    int i = 0;
    while (true)
    {
      if (localFrame != null)
      {
        int j = this.frameCount;
        if (i < j);
      }
      else
      {
        return arrayOfInt;
      }
      int k = localFrame.delay;
      arrayOfInt[i] = k;
      localFrame = localFrame.nextFrame;
      i += 1;
    }
  }

  public Frame getFrame(int paramInt)
  {
    Frame localFrame1 = this.gifFrame;
    int i = 0;
    while (true)
    {
      if (localFrame1 == null);
      for (Frame localFrame2 = null; ; localFrame2 = localFrame1)
      {
        return localFrame2;
        if (i != paramInt)
          break;
      }
      localFrame1 = localFrame1.nextFrame;
      i += 1;
    }
  }

  public int getFrameCount()
  {
    return this.frameCount;
  }

  public Bitmap getFrameImage(int paramInt)
  {
    Frame localFrame = getFrame(paramInt);
    if (localFrame == null);
    for (Bitmap localBitmap = null; ; localBitmap = localFrame.image)
      return localBitmap;
  }

  public int getHeight()
  {
    return this.height;
  }

  public Bitmap getImage()
  {
    return getFrameImage(0);
  }

  public int getLoopCount()
  {
    return this.loopCount;
  }

  public int getStatus()
  {
    return this.status;
  }

  public int getWidth()
  {
    return this.width;
  }

  public Frame next()
  {
    Frame localFrame1;
    if (!this.isShow)
    {
      this.isShow = 1;
      localFrame1 = this.gifFrame;
      return localFrame1;
    }
    if (this.status == 0)
      if (this.currentFrame.nextFrame != null)
      {
        Frame localFrame2 = this.currentFrame.nextFrame;
        this.currentFrame = localFrame2;
      }
    while (true)
    {
      localFrame1 = this.currentFrame;
      break;
      Frame localFrame3 = this.currentFrame.nextFrame;
      this.currentFrame = localFrame3;
      if (this.currentFrame != null)
        continue;
      Frame localFrame4 = this.gifFrame;
      this.currentFrame = localFrame4;
    }
  }

  public boolean parseOk()
  {
    if (this.status == -1);
    for (int i = 1; ; i = 0)
      return i;
  }

  public void reset()
  {
    Frame localFrame = this.gifFrame;
    this.currentFrame = localFrame;
  }

  public void run()
  {
    if (this.in != null)
      if (this.justDecodeBounds)
        int i = readStreamJustDecodeBounds();
    while (true)
    {
      return;
      int j = readStream();
      continue;
      if (this.gifData == null)
        continue;
      if (this.justDecodeBounds)
      {
        int k = readByteJustDecodeBounds();
        continue;
      }
      int m = readByte();
    }
  }
}

/* Location:           D:\Program Files\eclipse\apktool-r01-3\新浪微博\classes.dex.dex2jar.jar
 * Qualified Name:     sudroid.android.graphics.gif.Decoder
 * JD-Core Version:    0.6.0
 */